﻿using log4net;
using PcaCaja.BOL;
using PcaCore.DAL;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace PcaCaja.DAL
{
    public class dResumenLiquidacion
    {
        private static readonly ILog log = LogManager.GetLogger(typeof(dResumenLiquidacion));  
        
        #region Public

        public static void Calcular(string empresaId,
                                    string oficinaId,
                                    long LiquidacionId,
                                    string usuarioId)
        {
            try
            {
                //CREATE OR REPLACE FUNCTION pca_caja.fn_calcular_resumen_liquidacion(varchar,--empresa_id $1
                //                    varchar,--oficina_id $2
                //                    bigint,--liquidacion_id $3
                //                    character --usuario_id $4
                //                    )RETURNS void
                Core.ExecuteNonQuery("pca_caja.fn_calcular_resumen_liquidacion",
                                     new oParametro(NpgsqlTypes.NpgsqlDbType.Varchar, empresaId),
                                     new oParametro(NpgsqlTypes.NpgsqlDbType.Varchar, oficinaId),
                                     new oParametro(NpgsqlTypes.NpgsqlDbType.Bigint, LiquidacionId),
                                     new oParametro(NpgsqlTypes.NpgsqlDbType.Varchar, usuarioId));
            }
            catch (Exception ex)
            {
                throw Core.LogException(log, ex, MethodBase.GetCurrentMethod().Name);
            }
        }


        public static List<oVwResumenLiquidacion> Get(string empresaId,
                                                      string oficinaId,
                                                      long liquidacionId,
                                                      string usuarioId)
        {
            try
            {
                //CREATE OR REPLACE FUNCTION pca_caja.fn_get_resumen_liquidacion(varchar,--empresa_id $1
                //                           varchar,--oficina_id $2
                //                           bigint,--liquidacion_id $3
                //                           character --usuario_id $4
                //                           )RETURNS SETOF pca_caja.vw_resumen_liquidaciones
                return Core.GetListObjecstDb<oVwResumenLiquidacion>("pca_caja.fn_get_resumen_liquidacion",
                                                                    new oParametro(NpgsqlTypes.NpgsqlDbType.Varchar, empresaId),
                                                                    new oParametro(NpgsqlTypes.NpgsqlDbType.Varchar, oficinaId),
                                                                    new oParametro(NpgsqlTypes.NpgsqlDbType.Bigint, liquidacionId),
                                                                    new oParametro(NpgsqlTypes.NpgsqlDbType.Varchar, usuarioId));
            }
            catch (Exception ex)
            {
                throw Core.LogException(log, ex, MethodBase.GetCurrentMethod().Name); 
            }
        }

        #endregion
    }
}
